When recomputing CSS, we need a correct widget path in the fallback mode
where we're still using widget paths.
So we need to invalidate it everytime it actually changes, and not just
when emitting the style-updated signal.
Fixes css-match-regions reftest.
node = GTK_CSS_WIDGET_NODE (cssnode);
+ if (node->widget)
+ gtk_widget_clear_path (node->widget);
+
GTK_CSS_NODE_CLASS (gtk_css_widget_node_parent_class)->style_changed (cssnode, old_style, new_style);
diff = gtk_css_style_get_difference (new_style, old_style);
}
void
-_gtk_widget_style_context_invalidated (GtkWidget *widget)
+gtk_widget_clear_path (GtkWidget *widget)
{
if (widget->priv->path)
{
gtk_widget_path_free (widget->priv->path);
widget->priv->path = NULL;
}
+}
+void
+_gtk_widget_style_context_invalidated (GtkWidget *widget)
+{
if (gtk_widget_get_realized (widget))
g_signal_emit (widget, widget_signals[STYLE_UPDATED], 0);
else
GdkEvent *event);
GtkWidgetPath * _gtk_widget_create_path (GtkWidget *widget);
+void gtk_widget_clear_path (GtkWidget *widget);
void _gtk_widget_invalidate_style_context (GtkWidget *widget,
GtkCssChange change);
void _gtk_widget_style_context_invalidated (GtkWidget *widget);